/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package otcapp.experto.decoradores;

import otcapp.dto.PiezaDTO;
import otcapp.entidades.EstadoPieza;
import otcapp.experto.ExpertoIngresarPieza;
import otcapp.experto.excepciones.ExpertoPiezaException;
import persistencia.Conexion;

/**
 *
 * @author diego
 */
public class ExpertoIngresarPiezaDecorador extends ExpertoIngresarPieza {

    @Override
    public PiezaDTO ingresarPieza(PiezaDTO dtoPieza) throws ExpertoPiezaException {
        try {
            Conexion.getInstancia().iniciarTX();
            super.ingresarPieza(dtoPieza);
            Conexion.getInstancia().confirmarTx();
            return dtoPieza;
        } catch (ExpertoPiezaException ex) {
            Conexion.getInstancia().deshacerTx();
            throw ex;
        }

    }

    @Override
    public PiezaDTO setUbicacionPieza(PiezaDTO piezadto, EstadoPieza ubicacion, String observacion) throws ExpertoPiezaException {
        try {
            Conexion.getInstancia().iniciarTX();
            super.setUbicacionPieza(piezadto, ubicacion, observacion);
            Conexion.getInstancia().confirmarTx();
            return piezadto;
        } catch (ExpertoPiezaException ex) {
            Conexion.getInstancia().deshacerTx();
            throw ex;
        }
    }

    @Override
    public void darSalidaPieza(PiezaDTO dtoPieza) throws ExpertoPiezaException {
        try {
            Conexion.getInstancia().iniciarTX();
             super.darSalidaPieza(dtoPieza);
            Conexion.getInstancia().confirmarTx();
        } catch (ExpertoPiezaException ex) {
            Conexion.getInstancia().deshacerTx();
            throw ex;
        }
       
    }
    
    
    
    
}
